package server.dominio;

import java.rmi.RemoteException;
import java.util.Enumeration;
import java.util.Hashtable;

import server.persistencia.FachadaPersistencia;
import server.persistencia.TableroJuegoDAO;


public class Sudoku extends TableroJuego{
	protected int id;
	protected Cuadricula[] cuadriculas;
	protected TableroJuegoDAO dao;

	public Sudoku() {
		cuadriculas=new Cuadricula[9];
		for (int i=0; i<9; i++)
			cuadriculas[i]=new Cuadricula();
		this.dao=FachadaPersistencia.getTableroJuegoDAO(this);
	}
	public Sudoku(String id) throws Exception {
		this();
		this.dao.getTableroJuegoByORMID(id);
	}

	public void setNumeros(String ristra) {  
		System.out.print("COMUNICA  CON LA BASE DE DATOSS");
		/*byte fila=0, columna=-1;
		for (byte i=0; i<ristra.length(); i++) {
			String c=""+ristra.charAt(i);
			byte idCuadricula=(byte) (i/9);
			if (idCuadricula>0 && i%9==0) {
				fila=0;
				columna=0;
			} else {
				columna++;
				if (columna==3) {
					fila++;
					columna=0;
				}
			}
			if (c.equals(" "))
				cuadriculas[idCuadricula].colocar(fila, columna, (byte) 0);
			else {
				final byte b=Byte.parseByte(c);
				cuadriculas[idCuadricula].colocar(fila, columna, b);
			}
		}*/
	}

	public int getId() {
		return id;
	}
	
	public String toString() {
		String result="";
		for (int i=0; i<9; i++) {
			result+=cuadriculas[i].toString();
		}
		return result;
	}

	

	public void poner(byte idCuadricula, byte fila, byte columna, byte numero) throws RemoteException {
		if (numero>=0 && numero<=9) {
			this.cuadriculas[idCuadricula].colocar(fila, columna, numero);
			update();
			//notificar();
		}
	}
	
	public void quitar(byte idCuadricula, byte fila, byte columna) throws RemoteException {
		this.cuadriculas[idCuadricula].colocar(fila, columna, (byte) 0);
		update();
		//notificar();
	}
	
	public void insert() throws Exception {
		this.dao.insert(this.toString());
	}

	private void update() throws RemoteException {
		try {
			this.dao.update();
		} catch (Exception e) {
			throw new RemoteException(e.toString());
		}
	}

	public void setId(int id) {
		this.id=id;
	}

}

	